#pragma once

#include <QThread>
#include <QMutex>
#include "NetServer.h"
#include "netPackDefine.h"

class ServerThread :public QThread
{
	Q_OBJECT

public:
	ServerThread();
	~ServerThread();

	void init(int port);	
	void deinit();

	void sendPack(int netId, const NetPackVariant &pack);	
	void closeConnect(int netId);
	NetInfo netInfo(int netId);

signals:
	void newConnect(int netid);
	void disConnect(int netid);
	void newDataRecv(int netId, NetPackPtr pack);
	
	void sigInit(int port);
	void sigDeinit();
	void sigSendPack(int netId, NetPackPtr pack);
	void sigCloseConnect(int netId);

protected slots:
	void onInit(int port);
	void onDeinit();
	void onNewConnect(int netid);
	void onDisConnect(int netid);
	void onSendPack(int netId, NetPackPtr pack);
	void onCloseConnect(int netId);

protected:	
	QMap<int, NetInfo> m_netInfo;
    QMutex m_mutex;
	NetServer *m_server;
};
